from flask import Flask,request,jsonify
import json
#实例化对象
app = Flask(__name__)
#加载配制文件
from config import Config
app.config.from_object(Config)
#跨域配制
from flask_cors import CORS
CORS(app)
#实现orm，对象关系映射
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)

# 创建分类表
class Cate(db.Model):
    # __tablename__='cate'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    name=db.Column(db.String(40),unique=True) #名称
    level = db.Column(db.Integer,default=1) # 等级
    pid = db.Column(db.Integer,default=0) # 父id
# db.create_all()

#创建课程表
# class Coluse(db.Model):
#     # __tablename__='course'
#     id = db.Column(db.Integer,primary_key=True,autoincrement=True)
#     name = db.Column(db.String(50),unique=True)#名称唯一
#     description = db.Column(db.String(50),default='')#讲述
#     tname = db.Column(db.String(50),default='')# 讲师
#     pic = db.Column(db.String(255),default='')# 图片
#     vedios = db.Column(db.String(255),default='')#视频['','']
#     status = db.Column(db.Integer,default='1')# 审核状态
#     reason = db.Column(db.String(255),defauit='')# 失败原因
#     cid = db.Column(db.Integer,db.Foreignkey('cate.id'))# 所属分类
# db.create_all()

#分类接口（增删改查）
@app.route('/cateM',methods=['POST','GET','DELETE'])
def cateM():
    #获取参数
    if request.method=="POST":
        data = request.data
        #对参数进行验证，如果有json.loads()
        if data:
            data = json.loads(data)
        #如果没有去form中获取
        else:
            data = request.form 
        #添加
        cate = Cate(name=data['name'])
        db.session.add(cate)
        #提交
        db.session.commit()
        #返回结果
        return jsonify({"code":200})

    # 分类展示
    elif request.method == 'GET':
        # 先获取所有信息
        cates = Cate.query.all()
        # 重构数据 新定义一个空列表
        list = []
        if cates:
        # 循环
            for i in cates:
        # 定义一个字典
                dict={'id':i.id,'name':i.name}
                list.append(dict)
        return jsonify({'code':200,'list':list})

    # 分类删除
    elif request.method == 'DELETE':
        # 获取前端路由传递的id
        id =request.args.get('id')
        # 根据id拿到数据进行删除
        Cate.query.filter_by(id=id).delete()
        # 提交
        db.session.commit()
        return jsonify({'code':200})
    
# 根据id获取分类信息
@app.route('/getcate')
def getcate():
    # 获取id
    id = request.args.get('id')
    # 通过id获取单条信息
    cate = Cate.query.filter_by(id=id).first()
    #数据重组
    dict = {'id':cate.id,'name':cate.name}
    #返回
    return jsonify({'code':200,'cate':dict})

# 课程管理
@app.route('/courseM',methods=['POST','GET'])
def courseM():
    if request.method == 'POST':
        # 接收客户传递的参数
        data =request.date
        if data:
            data.json.loads(data)
        else:
            data = request.form
        # 构造数据

        course =Course(name=data['name'],description=data['description'],tname=data['tname'],pic=data['pic'],,vedios=json.dumps(data['vedios'],ensure_ascii=False),cid=data['cid'])
        # 添加
        db.session.add(course)
        # 提交
        db.session.commit()
        # 返回
        return jsonify({'code':200})
    elif method == 'GET':
        # 获取参数
        # 当前点击的页面，如果没点击默认为1
        page = int(request.args.get('page'))
        # 每页显示多少条
        size = int(request.args.get('size'))
        # 读取数据
        start = (page-1)*size
        Course.query.offset(start).limit(size)
        # 对结果进行解析
        list = []
        if course:
            for i in course:
                list.append({'id':i.id,'name':i.name,'pic':i.pic,'tname':i.tname})
        # 获取共有多少条数据
        total = Course.query.count()
        # 返回
        return jsonify({'code':200})

import os
# 图片上传
@app.route('/upload',methods=['POST'])
def upload():
    file =request.files['file']
    file.save(os.path.json('./static/upload/',file.filename))
    return jsonify({'code':200,'pic':file.filename})


@app.route('/courss')
def courss():
    # 获取id
    id = request.args.get('id')
    if id:
        course = course.query.filter_by(id=id).first()
        cour = {'id':course.id,'name':course.name,'description':course.description,'tname':course.tname,'pic':course.pic,'vedios':course.vedios,'cid':course.cid}
        return jsonify({"code":200,'course':cour})







if __name__ == "__main__":
    app.run(debug=True) 